1. Technical Field
The present invention relates to memory management systems and more particularly to a system for managing memory pages for accessing fixed size data objects.
2. Prior Art
Many applications today are very heap intensive with respect to working set size and performance. In object-oriented programs written in C.sup.++, objects are created and deleted from the heap with the life of an object often being very short.
A solution to increase the performance of these kind of applications is to use a very efficient heap allocator that can perform allocate and release operations in constant time and also minimize the "page hits" required, i.e. objects are allocated from minimal set of pages.
Known attempts to improve the performance of applications which manipulate large numbers of small data objects have included chaining released objects of a specific size in a linked list and reusing these objects for future allocations. While this approach results in faster performance than another known method which coalesces released objects, the chaining method for released objects can however result in unnecessary page hits during allocations. Another disadvantage is that the chaining of released objects will tend to increase the heap size since free objects cannot be recycled for other sizes. Furthermore, each object size is rounded to a factor suitable by the main heap allocator which may have heap working set size implications.
Therefore, there remains a need in the art to improve the speed of a heap allocator while at the same time reducing the working set size in a manner that is page sensitive. The method is preferably suitable for systems which utilize multiple user controlled heaps.